#include "linkedlist.h"
#include <stdio.h>
int main() {
	linkedlist *a,*b,*t;
	char *st;
	a=new linkedlist();
	b=new linkedlist();
	a->add("one");
	a->add("two");
	a->add("three");
	a->add("four");
	a->add("five");
	a->add("eleven");
	b->add("one");
	b->add("three");
	b->add("five");
	b->add("six");
	b->add("nine");
	b->add("eleven");
	printf("Before Sorting\n");
	st=a->toString();
	printf("A      : %s\n",st);
	free(st);
	st=b->toString();
	printf("B      : %s\n",st);
	free(st);
	a->sort();
	b->sort();
	printf("After Sorting\n");
	st=a->toString();
	printf("A      : %s\n",st);
	free(st);
	st=a->toString();
	printf("B      : %s\n",st);
	free(st);
	t=(a->minus(b));
	st=t->toString();
	printf("A-B    : %s\n",st);
	delete t;
	free(st);
	t=a->copyList();
	t->sortedselfminus(b);
	st=t->toString();
	printf("A-B    : %s\n",st);
	delete t;
	free(st);
	t=b->minus(a);
	st=t->toString();
	printf("B-A    : %s\n",st);
	delete t;
	free(st);
	t=b->copyList();
	t->sortedselfminus(a);
	st=t->toString();
	printf("B-A    : %s\n",st);
	delete t;
	free(st);
	t=(a->intersect(b));
	st=t->toString();
	printf("A int B: %s\n",st);
	delete t;
	free(st);
	t=(b->intersect(a));
	st=t->toString();
	printf("B int A: %s\n",st);
	delete t;
	free(st);
	a->removeAll();
	b->removeAll();
	a->add("1");
	a->add("2");
	a->add("3");
	a->add("10");
	a->add("14");
	a->add("23");
	a->add("32");
	a->add("3");
	a->add("33");
	a->add("10");
	a->add("14");
	a->add("5");
	b->add("apple");
	b->add("richard");
	b->add("umbrella");
	b->add("nancy");
	st=a->toString();
	printf("Before: A      : %s\n",st);
	free(st);
	st=b->toString();
	printf("Before: B      : %s\n",st);
	free(st);
	a->removeDuplicates();
	st=a->toString();
	printf("After : A      : %s\n",st);
	free(st);
	b->merge(a);
	st=b->toString();
	printf("After : B      : %s\n",st);
	free(st);
	b->sort();
	st=b->toString();
	printf("After : B      : %s\n",st);
	free(st);
	delete a;
	delete b;
	a=NULL;
	b=NULL;
	t=NULL;
	a=new linkedlist();
	a->add("1");
	st=a->remove();
	free(st);
	a->add("2");
	a->add("3");
	st=a->remove();
	free(st);
	st=a->remove();
	free(st);
 	delete a;	
	return 0;
}
